main(){
  // 字符串类型
  // var str1 = 'str1';
  // String str2 = 'str2';
  // String str3 = '''str3 
  // str3
  // ''';//把字符串分多行写可以用三个引号包着
  // print('$str1 $str2 $str3'); //字符串拼接方法1，一次打印多个数据；
  // print(str1 + str2 + str3); //字符串拼接方法2，一次打印多个数据；
  
  // 数值类型
  // int定义数值---int只能定义整数
  // int a = 888;
 
  // // double定义数值---有浮点数的一般用double定义；double也可以定义整数
  // double b = 888.88;
  // // print('$a,$b');

  // // 数值的运算符有：+ - * / %
  // var c = b%a;//取余
  // print(c);
  
  // bool 布尔值类型
  // var flag = true;//用var定义
  // bool flag = false;//用bool关键字定义

  // 条件判断语句
  // ==数据类型与数值结果相等才会为true；
  // ==判断数据是否相等;!=判断不相等
  // if(flag==true){
  //   print('真');
  // }else{
  //   print('假');
  // }

  // 数组/集合数据类型
  var arr = ['小米',8,true];
  var arr2 = <int>[1,2,3];//指定元素的数据类型的数组
  // print(arr.length);//获取数组的长度
  // 给数组添加元素
  arr2.add(4);
  // 给数组添加一个数组并且拼接
  arr2.addAll([5,6,7]);
  print(arr2);

  // 创建一个固定长度的数组,任意操作都不能修改该数组的长度；
  // 隐式的数据类型推导：数据在初始化时赋值给了什么数据类型，那它就只能是这个数据类型；后续不能修改其的数据类型；
  var arr3 = List.filled(2, 8);//第一个参数是数组的长度，第二个是数组的元素
  // var arr4 = List<int>.filled(2, 8);//指定数据类型为数值的固定长度数组；
  print(arr3);

  // Maps数据类型---类似于对象
  // 注意：数据的键必须要用引号包着,值可以是任意数据类型
  // 第一种定义map的方法
  var obj = {
    'name': '老牛',
    'age': 8
  };
  print(obj['name']);//读取Maps中的某一项数据

  // 第二种定义map的方法:通过new Map()的方式
  var p = new Map();
  p['name'] = '老撒';
  p['age'] = 88;
  print(p);

  // dart判断数据类型的关键字用：is
  // var str = 'string';
  // bool f = true;
  // print(str is String);
}